package com.weilele.mvvm.utils.db_litepal

import com.weilele.mvvm.app
import org.litepal.LitePal
import org.litepal.LitePalDB

object MvvmDb {
    data class DbBean(
        val dbName: String/*数据库名*/,
        val version: Int/*数据库版本*/,
        val cls: List<Class<*>>/*表*/
    )

    init {
        LitePal.initialize(app)
        LitePal.getDatabase()
    }

    /**
     * 设置当前操作的数据库，不设置默认是assets的数据库
     */
    fun setCurrentDb(db: DbBean) {
        val litePalDB = LitePalDB(db.dbName, db.version)
        db.cls.forEach { className ->
            litePalDB.addClassName(className.name)
        }
        LitePal.use(litePalDB)
    }

    /**
     * 查询表所有数据
     */
    inline fun <reified T> findAll(): MutableList<T> {
        return LitePal.findAll(T::class.java)
    }

    /**
     * 查询表所有数据
     */
    inline fun <reified T> deleteAll(): Int {
        return LitePal.deleteAll(T::class.java)
    }
}